package cc.rengu.igas.momp.common.util;

import cc.rengu.igas.momp.common.dao.McDetailInfoMapper;
import cc.rengu.igas.momp.common.dao.PlatBizTmpMapper;
import cc.rengu.igas.momp.common.dao.impl.McDetailInfoMapperImpl;
import cc.rengu.igas.momp.common.dao.impl.PlatBizTmpMapperImpl;
import cc.rengu.igas.momp.common.entity.TMPlatBizTmp;
import cc.rengu.igas.momp.common.enums.TableNameEnum;
import cc.rengu.utility.log.RgLogger;

/**
 * 营销活动基本信息数据库通用操作
 *
 * @author Jinan Liu
 * @date 2020/5/26 02:59
 */

public class McInfoDbOperation {

    /**
     * 根据数据库表名获取不同类型的营销活动基本信息
     *
     * @param rgLogger  平台日志
     * @param instId    法人机构号
     * @param mcNo      营销活动编号
     * @param tableName 数据库表名
     * @return java.lang.Object 返回对象
     * @throws Exception 异常信息
     * @author Jinan Liu
     * @date 2020/5/26 03:00
     */
    public static Object getMcInfo(RgLogger rgLogger, String instId, String mcNo, String tableName) throws Exception {

        McDetailInfoMapper mcDetailInfoMapper = new McDetailInfoMapperImpl();

        switch (TableNameEnum.getByValue(tableName)) {
            case T_M_MC_APS_INFO:
                /* 代理商返现类营销活动 */
            case T_M_MC_CCB_INFO:
                /* 收银员返现类营销活动 */
            case T_M_MC_CP_INFO:
                /* 卡券类营销活动 */
            case T_M_MC_MFD_INFO:
                /* 商户手续费优惠类营销活动 */
            case T_M_MC_MO_INFO:
                /* 减免类营销活动 */
                break;
            default:
                rgLogger.error("不支持的营销活动类型! TABLE_NAME=<{}>", tableName);
                return null;
        }

        return mcDetailInfoMapper.selectMcDetailInfo(instId, mcNo, tableName);
    }

    /**
     * @param rgLogger  平台日志
     * @param instId    法人机构号
     * @param mcNo      营销活动编号
     * @param tableName 数据库表名
     * @return cc.rengu.igas.momp.common.entity.TMPlatBizTmp 业务数据临时表
     * @throws Exception 异常信息
     * @author Jinan Liu
     * @date 2020/5/26 03:19
     */
    public static TMPlatBizTmp getTmpMcInfo(RgLogger rgLogger, String instId, String mcNo, String tableName) throws Exception {

        PlatBizTmpMapper platBizTmpMapper = new PlatBizTmpMapperImpl();

        switch (TableNameEnum.getByValue(tableName)) {
            case T_M_MC_APS_INFO:
                /* 代理商返现类营销活动 */
            case T_M_MC_CCB_INFO:
                /* 收银员返现类营销活动 */
            case T_M_MC_CP_INFO:
                /* 卡券类营销活动 */
            case T_M_MC_MFD_INFO:
                /* 商户手续费优惠类营销活动 */
            case T_M_MC_MO_INFO:
                /* 减免类营销活动 */
                break;
            default:
                rgLogger.error("不支持的营销活动类型! TABLE_NAME=<{}>", tableName);
                return null;
        }

        return platBizTmpMapper.selectTmpMcInfo(instId, mcNo, tableName);
    }
}
